package ar.com.algotres.tpdos.model.fisica;

import ar.uba.fi.algo3.titiritero.Posicionable;

public abstract class RepresentacionFisica implements Posicionable {

	private Posicion posicion;
	private Integer radioDeColision;

	public RepresentacionFisica(Posicion posicion, Integer radioDeColision) {
		this.posicion = posicion;
		this.radioDeColision = radioDeColision;
	}

	public void setPosicion(Posicion posicion) {
		this.posicion = posicion;
	}
	
	public Posicion getPosicion() {
		return posicion;
	}

	@Override
	public int getX() {
		return posicion.getX();
	}

	@Override
	public int getY() {
		return posicion.getY();
	}
	
	public Boolean colisionaCon(RepresentacionFisica otroObjeto) {
		Integer sumaRadios = this.radioDeColision + otroObjeto.radioDeColision;
		Double distanciaEntreCentros = posicion.distanciaA(otroObjeto.getPosicion());
		return distanciaEntreCentros <= sumaRadios;
	}
	
	/**
	 * Verifica si la posicion dada está dentro de la representacion fisica
	 * @param unaPosicion
	 * @return
	 */
	public Boolean esPuntoInterno(Posicion unaPosicion) {
		Double distancia = posicion.distanciaA(unaPosicion);
		return distancia <= radioDeColision;
	}
}
